home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / proc / procInt.h < prev    next >
C/C++ Source or Header  |  1992-12-18  |  7KB  |  178 lines

  1. /*
  2.  * procInt.h --
  3.  *
  4.  *    Declarations internal to the proc module.
  5.  *
  6.  * Copyright (C) 1986, 1988 Regents of the University of California
  7.  * Permission to use, copy, modify, and distribute this
  8.  * software and its documentation for any purpose and without
  9.  * fee is hereby granted, provided that the above copyright
  10.  * notice appear in all copies.  The University of California
  11.  * makes no representations about the suitability of this
  12.  * software for any purpose.  It is provided "as is" without
  13.  * express or implied warranty.
  14.  *
  15.  *
  16.  * $Header: /cdrom/src/kernel/Cvsroot/kernel/proc/procInt.h,v 9.8 91/08/15 20:14:41 kupfer Exp $ SPRITE (Berkeley)
  17.  */
  18.  
  19. #ifndef _PROCINT
  20. #define _PROCINT
  21. #include <procMigrate.h>
  22. #include <migrate.h>
  23. #include <proc.h>
  24. #include <fs.h>
  25. #include <procMach.h>
  26. /*
  27.  * Information used by the Proc_Wait command for child termination information.
  28.  */
  29.  
  30. typedef struct {
  31.     Proc_PID             processID;
  32.     int             termReason;
  33.     int             termStatus;
  34.     int             termCode;
  35.     int                numQuantumEnds;
  36.     int                numWaitEvents;
  37.     Timer_Ticks            kernelCpuUsage;
  38.     Timer_Ticks            userCpuUsage;
  39.     Timer_Ticks            childKernelCpuUsage;
  40.     Timer_Ticks            childUserCpuUsage;
  41. } ProcChildInfo;
  42.  
  43. /*
  44.  * Machine independent object file information.
  45.  */
  46. typedef struct {
  47.     Address    codeLoadAddr;    /* Address in user memory to load code. */
  48.     unsigned    codeFileOffset;    /* Offset in obj file to load code from.*/
  49.     unsigned    codeSize;    /* Size of code segment. */
  50.     Address    heapLoadAddr;    /* Address in user memory to load heap. */
  51.     unsigned    heapFileOffset;    /* Offset in obj file to load initialized heap
  52.                  * from . */
  53.     unsigned    heapSize;    /* Size of heap segment. */
  54.     Address    bssLoadAddr;    /* Address in user memory to load bss. */
  55.     unsigned    bssSize;    /* Size of bss segment. */
  56.     Address    entry;        /* Entry point to start execution. */
  57.     Boolean    unixCompat;    /* True if running unix compat. mode */
  58. } ProcObjInfo;
  59.  
  60. /*
  61.  * Procedures internal to the proc module.
  62.  */
  63.  
  64. extern void         ProcRemoteExit _ARGS_((register 
  65.                 Proc_ControlBlock *procPtr, int reason, 
  66.                 int exitStatus, int code));
  67. extern     void         ProcRemoteSuspend _ARGS_((Proc_ControlBlock *procPtr,
  68.                 int exitFlags));
  69. extern void         ProcExitProcess _ARGS_((register 
  70.                 Proc_ControlBlock *exitProcPtr, int reason, 
  71.                 int status, int code, Boolean thisProcess));
  72. extern void         ProcFamilyHashInit _ARGS_((void));
  73. extern void         ProcDebugInit _ARGS_((void));
  74. extern    void        ProcDebugWakeup _ARGS_((void));
  75. extern void         ProcRecovInit _ARGS_((void));
  76. extern void         ProcFamilyRemove _ARGS_((Proc_ControlBlock *procPtr));
  77. extern ReturnStatus     ProcFamilyInsert _ARGS_((Proc_ControlBlock *procPtr, 
  78.                 int familyID));
  79. extern    ReturnStatus    ProcChangeTimer _ARGS_((int timerType, 
  80.                 Proc_TimerInterval *newTimerPtr,
  81.                 Proc_TimerInterval *oldTimerPtr,
  82.                 Boolean userMode));
  83. extern    void        ProcDeleteTimers _ARGS_((Proc_ControlBlock *procPtr));
  84. extern ReturnStatus     ProcExecGetEncapSize _ARGS_((Proc_ControlBlock *procPtr,
  85.                 int hostID, Proc_EncapInfo *infoPtr));
  86. extern ReturnStatus     ProcExecEncapState _ARGS_((register 
  87.                 Proc_ControlBlock *procPtr, int hostID, 
  88.                 Proc_EncapInfo *infoPtr, Address bufPtr));
  89. extern ReturnStatus    ProcExecDeencapState _ARGS_((register 
  90.                 Proc_ControlBlock *procPtr, 
  91.                 Proc_EncapInfo *infoPtr, Address bufPtr));
  92. extern ReturnStatus     ProcExecFinishMigration _ARGS_((register 
  93.                 Proc_ControlBlock *procPtr, int hostID, 
  94.                 Proc_EncapInfo *infoPtr, Address bufPtr, 
  95.                 Boolean failure));
  96. extern void         ProcDoRemoteExec _ARGS_((register 
  97.                 Proc_ControlBlock *procPtr));
  98. extern void         ProcRemoteExec _ARGS_((register 
  99.                 Proc_ControlBlock *procPtr, int uid));
  100. extern  void        ProcRecordUsage _ARGS_((Timer_Ticks ticks,
  101.                 ProcRecordUsageType type));
  102. extern  ReturnStatus    ProcRemoteWait _ARGS_((Proc_ControlBlock *procPtr,
  103.                 int flags, int numPids, Proc_PID pidArray[],
  104.                 ProcChildInfo *childInfoPtr));
  105. extern    ReturnStatus    ProcRemoteFork _ARGS_((Proc_ControlBlock *parentProcPtr,
  106.                 Proc_ControlBlock *childProcPtr));
  107. extern    ReturnStatus    ProcInitiateMigration _ARGS_((
  108.                 Proc_ControlBlock *procPtr, int hostID));
  109. extern    ReturnStatus    ProcServiceRemoteWait _ARGS_((
  110.                 Proc_ControlBlock *curProcPtr,
  111.                 int flags, int numPids, Proc_PID pidArray[],
  112.                 int waitToken, ProcChildInfo *childInfoPtr));
  113. extern    void        ProcDebugInit _ARGS_((void));
  114. extern void         ProcInitMainEnviron _ARGS_((register 
  115.                 Proc_ControlBlock *procPtr));
  116. extern void         ProcSetupEnviron _ARGS_((register 
  117.                 Proc_ControlBlock *procPtr));
  118. extern void         ProcDecEnvironRefCount _ARGS_((register 
  119.                 Proc_EnvironInfo    *environPtr));
  120. extern    ReturnStatus    ProcIsObj _ARGS_((Fs_Stream *streamPtr,
  121.                 int doErr));
  122. extern    void        ProcAddToGroupList _ARGS_((Proc_ControlBlock *procPtr,
  123.                 int gid));
  124. extern    ReturnStatus    ProcMigReceiveProcess _ARGS_((ProcMigCmd *cmdPtr,
  125.                 Proc_ControlBlock *procPtr,
  126.                 Proc_MigBuffer *inBufPtr,
  127.                 Proc_MigBuffer *outBufPtr));
  128. extern    ReturnStatus    ProcMigGetUpdate _ARGS_((ProcMigCmd *cmdPtr,
  129.                 Proc_ControlBlock *procPtr,
  130.                 Proc_MigBuffer *inBufPtr,
  131.                 Proc_MigBuffer *outBufPtr));
  132. extern    ReturnStatus    ProcMigGetSupend _ARGS_((ProcMigCmd *cmdPtr,
  133.                 Proc_ControlBlock *procPtr,
  134.                 Proc_MigBuffer *inBufPtr, 
  135.                 Proc_MigBuffer *outBufPtr));
  136. extern    ReturnStatus    ProcMigEncapCallback _ARGS_((ProcMigCmd *cmdPtr,
  137.                 Proc_ControlBlock *procPtr,
  138.                 Proc_MigBuffer *inBufPtr,
  139.                 Proc_MigBuffer *outBufPtr));
  140. extern    void        ProcMigKillRemoteCopy _ARGS_((ClientData data,
  141.                 Proc_CallInfo *infoPtr));
  142. extern    ReturnStatus    ProcMigCommand _ARGS_((int host, ProcMigCmd *cmdPtr,
  143.                 Proc_MigBuffer *inBufPtr, 
  144.                 Proc_MigBuffer *outBufPtr));
  145. extern    void        ProcMigWakeupWaiters _ARGS_((void));
  146. extern    void        ProcMigEvictionComplete _ARGS_((void));
  147. extern    void        ProcMigAddDependency _ARGS_((Proc_PID processID,
  148.                 Proc_PID peerProcessID));
  149. extern    void        ProcMigRemoveDependency _ARGS_((Proc_PID processID,
  150.                 Boolean notified));
  151. extern    ReturnStatus    ProcMigAcceptMigration _ARGS_((ProcMigCmd *cmdPtr,
  152.                 Proc_ControlBlock *procPtr,
  153.                 Proc_MigBuffer *inBufPtr,
  154.                 Proc_MigBuffer *outBufPtr));
  155. extern    ReturnStatus    ProcMigDestroyCmd _ARGS_((ProcMigCmd *cmdPtr,
  156.                 Proc_ControlBlock *procPtr,
  157.                 Proc_MigBuffer *inBufPtr,
  158.                 Proc_MigBuffer *outBufPtr));
  159. extern    ReturnStatus    ProcMigContinueProcess _ARGS_((ProcMigCmd *cmdPtr,
  160.                 Proc_ControlBlock *procPtr,
  161.                 Proc_MigBuffer *inBufPtr,
  162.                 Proc_MigBuffer *outBufPtr));
  163. extern    ReturnStatus    ProcMigGetSuspend _ARGS_((ProcMigCmd *cmdPtr,
  164.                 Proc_ControlBlock *procPtr,
  165.                 Proc_MigBuffer *inBufPtr,
  166.                 Proc_MigBuffer *outBufPtr));
  167. extern    void        ProcInitTable _ARGS_((void));
  168. extern    Proc_ControlBlock *ProcGetUnusedPCB _ARGS_((void));
  169. extern    void        ProcFreePCB _ARGS_((Proc_ControlBlock *procPtr));
  170. extern    int        ProcTableMatch _ARGS_((int maxPids,
  171.                 Boolean (*booleanFuncPtr)
  172.                     (Proc_ControlBlock *pcbPtr),
  173.                 Proc_PID *pidArray));
  174. extern     int        ProcGetObjInfo _ARGS_((Fs_Stream *filePtr,
  175.                 ProcExecHeader *execPtr,
  176.                 ProcObjInfo *objInfoPtr));
  177. #endif /* _PROCINT */
  178.